home *** CD-ROM | disk | FTP | other *** search
/ Motor Sport Digital Archive Collection 1960s / Motor Sport Digital Archive Collection 1960s.iso / main.swf / scripts / mx / messaging / channels / NetConnectionChannel.as < prev    next >
Encoding:
Text File  |  2008-05-21  |  10.4 KB  |  304 lines

  1. package mx.messaging.channels
  2. {
  3.    import flash.events.ErrorEvent;
  4.    import flash.events.IOErrorEvent;
  5.    import flash.events.NetStatusEvent;
  6.    import flash.events.SecurityErrorEvent;
  7.    import flash.events.TimerEvent;
  8.    import flash.net.NetConnection;
  9.    import flash.net.ObjectEncoding;
  10.    import mx.logging.Log;
  11.    import mx.messaging.Consumer;
  12.    import mx.messaging.MessageAgent;
  13.    import mx.messaging.MessageResponder;
  14.    import mx.messaging.events.ChannelFaultEvent;
  15.    import mx.messaging.events.MessageEvent;
  16.    import mx.messaging.messages.CommandMessage;
  17.    import mx.messaging.messages.IMessage;
  18.    
  19.    public class NetConnectionChannel extends PollingChannel
  20.    {
  21.       private var _nc:NetConnection;
  22.       
  23.       public function NetConnectionChannel(param1:String, param2:String)
  24.       {
  25.          super(param1,param2);
  26.          _nc = new NetConnection();
  27.          _nc.objectEncoding = ObjectEncoding.AMF3;
  28.          _nc.client = this;
  29.       }
  30.       
  31.       private function securityErrorHandler(param1:SecurityErrorEvent) : void
  32.       {
  33.          defaultErrorHandler("Channel.Security.Error",param1);
  34.       }
  35.       
  36.       private function defaultErrorHandler(param1:String, param2:ErrorEvent) : void
  37.       {
  38.          var _loc3_:ChannelFaultEvent = null;
  39.          _loc3_ = ChannelFaultEvent.createEvent(this,false,param1,"error",param2.text + " url: \'" + endpoint + "\'");
  40.          _loc3_.rootCause = param2;
  41.          dispatchEvent(_loc3_);
  42.       }
  43.       
  44.       public function AppendToGatewayUrl(param1:String) : void
  45.       {
  46.          if(param1 != null && endpoint != null)
  47.          {
  48.             netConnection.connect(endpoint + param1);
  49.          }
  50.       }
  51.       
  52.       private function shutdownNetConnection() : void
  53.       {
  54.          _nc.removeEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
  55.          _nc.removeEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
  56.          _nc.removeEventListener(NetStatusEvent.NET_STATUS,statusHandler);
  57.          _nc.close();
  58.       }
  59.       
  60.       override protected function connectTimeoutHandler(param1:TimerEvent) : void
  61.       {
  62.          shutdownNetConnection();
  63.          super.connectTimeoutHandler(param1);
  64.       }
  65.       
  66.       override protected function internalDisconnect(param1:Boolean = false) : void
  67.       {
  68.          super.internalDisconnect(param1);
  69.          shutdownNetConnection();
  70.          disconnectSuccess(param1);
  71.       }
  72.       
  73.       override protected function getPollSyncMessageResponder(param1:Consumer, param2:CommandMessage) : MessageResponder
  74.       {
  75.          return new PollSyncMessageResponder(param1,param2,this);
  76.       }
  77.       
  78.       public function receive(param1:IMessage, ... rest) : void
  79.       {
  80.          if(Log.isDebug())
  81.          {
  82.             _log.debug("\'{0}\' channel got message\n{1}\n",id,param1.toString());
  83.          }
  84.          dispatchEvent(MessageEvent.createEvent(MessageEvent.MESSAGE,param1));
  85.       }
  86.       
  87.       override protected function internalSend(param1:MessageResponder) : void
  88.       {
  89.          _nc.call(null,param1,param1.message);
  90.       }
  91.       
  92.       override protected function getDefaultMessageResponder(param1:MessageAgent, param2:IMessage) : MessageResponder
  93.       {
  94.          return new NetConnectionMessageResponder(param1,param2,this);
  95.       }
  96.       
  97.       private function ioErrorHandler(param1:IOErrorEvent) : void
  98.       {
  99.          defaultErrorHandler("Channel.IO.Error",param1);
  100.       }
  101.       
  102.       protected function internalConnectNC() : void
  103.       {
  104.          try
  105.          {
  106.             _nc.connect(endpoint);
  107.          }
  108.          catch(e:Error)
  109.          {
  110.             e.message += "  url: \'" + endpoint + "\'";
  111.             throw e;
  112.          }
  113.       }
  114.       
  115.       override protected function internalConnect() : void
  116.       {
  117.          if(_nc.uri != null && _nc.uri.length > 0)
  118.          {
  119.             _nc.removeEventListener(NetStatusEvent.NET_STATUS,statusHandler);
  120.             _nc.close();
  121.          }
  122.          _nc.addEventListener(NetStatusEvent.NET_STATUS,statusHandler);
  123.          _nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
  124.          _nc.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
  125.          internalConnectNC();
  126.          super.internalConnect();
  127.       }
  128.       
  129.       public function get netConnection() : NetConnection
  130.       {
  131.          return _nc;
  132.       }
  133.       
  134.       protected function statusHandler(param1:NetStatusEvent) : void
  135.       {
  136.       }
  137.    }
  138. }
  139.  
  140. import mx.messaging.MessageAgent;
  141. import mx.messaging.MessageResponder;
  142. import mx.messaging.events.ChannelEvent;
  143. import mx.messaging.events.ChannelFaultEvent;
  144. import mx.messaging.messages.AcknowledgeMessage;
  145. import mx.messaging.messages.AsyncMessage;
  146. import mx.messaging.messages.CommandMessage;
  147. import mx.messaging.messages.ErrorMessage;
  148. import mx.messaging.messages.IMessage;
  149. import mx.utils.Translator;
  150.  
  151. class NetConnectionMessageResponder extends MessageResponder
  152. {
  153.    private static const TRANSLATOR:Translator = Translator.getMessagingInstance();
  154.    
  155.    public function NetConnectionMessageResponder(param1:MessageAgent, param2:IMessage, param3:NetConnectionChannel)
  156.    {
  157.       super(param1,param2,param3);
  158.       param3.addEventListener(ChannelEvent.DISCONNECT,channelDisconnectHandler);
  159.       param3.addEventListener(ChannelFaultEvent.FAULT,channelFaultHandler);
  160.    }
  161.    
  162.    override protected function requestTimedOut() : void
  163.    {
  164.       disconnect();
  165.       statusHandler(createRequestTimeoutErrorMessage());
  166.    }
  167.    
  168.    protected function channelDisconnectHandler(param1:ChannelEvent) : void
  169.    {
  170.       var _loc2_:ErrorMessage = null;
  171.       disconnect();
  172.       _loc2_ = new ErrorMessage();
  173.       _loc2_.correlationId = message.messageId;
  174.       _loc2_.faultString = TRANSLATOR.textOf("deliveryInDoubt");
  175.       _loc2_.faultDetail = TRANSLATOR.textOf("deliveryInDoubt.details");
  176.       _loc2_.faultCode = ErrorMessage.MESSAGE_DELIVERY_IN_DOUBT;
  177.       agent.fault(_loc2_,message);
  178.    }
  179.    
  180.    override protected function resultHandler(param1:IMessage) : void
  181.    {
  182.       var _loc2_:ErrorMessage = null;
  183.       disconnect();
  184.       if(param1 is AsyncMessage)
  185.       {
  186.          if(AsyncMessage(param1).correlationId == message.messageId)
  187.          {
  188.             agent.acknowledge(param1 as AcknowledgeMessage,message);
  189.          }
  190.          else
  191.          {
  192.             _loc2_ = new ErrorMessage();
  193.             _loc2_.faultCode = "Server.Acknowledge.Failed";
  194.             _loc2_.faultString = TRANSLATOR.textOf("ackFailed");
  195.             _loc2_.faultDetail = TRANSLATOR.textOf("ackFailed.details",message.messageId,AsyncMessage(param1).correlationId);
  196.             _loc2_.correlationId = message.messageId;
  197.             agent.fault(_loc2_,message);
  198.          }
  199.       }
  200.       else
  201.       {
  202.          _loc2_ = new ErrorMessage();
  203.          _loc2_.faultCode = "Server.Acknowledge.Failed";
  204.          _loc2_.faultString = TRANSLATOR.textOf("noAckMessage");
  205.          _loc2_.faultDetail = TRANSLATOR.textOf("noAckMessage.details",!!param1 ? param1.toString() : "null");
  206.          _loc2_.correlationId = message.messageId;
  207.          agent.fault(_loc2_,message);
  208.       }
  209.    }
  210.    
  211.    override protected function statusHandler(param1:IMessage) : void
  212.    {
  213.       var _loc2_:AcknowledgeMessage = null;
  214.       var _loc3_:ErrorMessage = null;
  215.       disconnect();
  216.       if(param1 is AsyncMessage)
  217.       {
  218.          if(AsyncMessage(param1).correlationId == message.messageId)
  219.          {
  220.             _loc2_ = new AcknowledgeMessage();
  221.             _loc2_.correlationId = AsyncMessage(param1).correlationId;
  222.             _loc2_.headers[AcknowledgeMessage.ERROR_HINT_HEADER] = true;
  223.             agent.acknowledge(_loc2_,message);
  224.             agent.fault(param1 as ErrorMessage,message);
  225.          }
  226.          else if(param1 is ErrorMessage)
  227.          {
  228.             agent.fault(param1 as ErrorMessage,message);
  229.          }
  230.          else
  231.          {
  232.             _loc3_ = new ErrorMessage();
  233.             _loc3_.faultCode = "Server.Acknowledge.Failed";
  234.             _loc3_.faultString = TRANSLATOR.textOf("noErrorForMessage");
  235.             _loc3_.faultDetail = TRANSLATOR.textOf("noErrorForMessage.details",message.messageId,AsyncMessage(param1).correlationId);
  236.             _loc3_.correlationId = message.messageId;
  237.             agent.fault(_loc3_,message);
  238.          }
  239.       }
  240.       else
  241.       {
  242.          _loc3_ = new ErrorMessage();
  243.          _loc3_.faultCode = "Server.Acknowledge.Failed";
  244.          _loc3_.faultString = TRANSLATOR.textOf("noAckMessage");
  245.          _loc3_.faultDetail = TRANSLATOR.textOf("noAckMessage.details",!!param1 ? param1.toString() : "null");
  246.          _loc3_.correlationId = message.messageId;
  247.          agent.fault(_loc3_,message);
  248.       }
  249.    }
  250.    
  251.    protected function channelFaultHandler(param1:ChannelFaultEvent) : void
  252.    {
  253.       var _loc2_:ErrorMessage = null;
  254.       disconnect();
  255.       _loc2_ = param1.createErrorMessage();
  256.       _loc2_.correlationId = message.messageId;
  257.       if(!param1.channel.connected)
  258.       {
  259.          _loc2_.faultCode = ErrorMessage.MESSAGE_DELIVERY_IN_DOUBT;
  260.       }
  261.       agent.fault(_loc2_,message);
  262.    }
  263.    
  264.    private function disconnect() : void
  265.    {
  266.       channel.removeEventListener(ChannelEvent.DISCONNECT,channelDisconnectHandler);
  267.       channel.removeEventListener(ChannelFaultEvent.FAULT,channelFaultHandler);
  268.    }
  269. }
  270.  
  271. class PollSyncMessageResponder extends NetConnectionMessageResponder
  272. {
  273.    public function PollSyncMessageResponder(param1:MessageAgent, param2:IMessage, param3:NetConnectionChannel)
  274.    {
  275.       super(param1,param2,param3);
  276.    }
  277.    
  278.    override protected function channelDisconnectHandler(param1:ChannelEvent) : void
  279.    {
  280.    }
  281.    
  282.    override protected function resultHandler(param1:IMessage) : void
  283.    {
  284.       var _loc2_:CommandMessage = null;
  285.       super.resultHandler(param1);
  286.       if(param1 is AsyncMessage && AsyncMessage(param1).correlationId == message.messageId)
  287.       {
  288.          _loc2_ = CommandMessage(message);
  289.          switch(_loc2_.operation)
  290.          {
  291.             case CommandMessage.SUBSCRIBE_OPERATION:
  292.                NetConnectionChannel(channel).enablePolling();
  293.                break;
  294.             case CommandMessage.UNSUBSCRIBE_OPERATION:
  295.                NetConnectionChannel(channel).disablePolling();
  296.          }
  297.       }
  298.    }
  299.    
  300.    override protected function channelFaultHandler(param1:ChannelFaultEvent) : void
  301.    {
  302.    }
  303. }
  304.